<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Hash;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * 后台用户添加页面
     * admin/user/add
     */
    public function getAdd()
    {
    	//解析模板
    	return view('user.add');
    }

    /**
     * 接受表单数据 执行插入操作
     * admin/user/insert
     */
    public function postInsert(Request $request)
    {
    	//表单验证
    	$this->validate($request,[
    		'username'=>'required|regex:[^\w{6,18}$]',
    		'password'=>'required',
    		'repassword'=>'required|same:password',
    		'email'=>'required|email'
    		],[
    		'username.required'=>'用户名不能为空',
    		'username.regex'=>'用户名至少6-18位',
    		'password.required'=>'密码不能为空',
    		'repassword.required'=>'确认密码不能为空',
    		'repassword.same'=>'确认密码不相同',
    		'email.required'=>'邮箱不能为空',
    		'email.email'=>'邮箱格式不正确'
    		]);
    	//接受数据
    	// dd($request->all());
    	$date = $request->only(['username','password','email']);
    	// dd($date);
    	$date['password'] = Hash::make($request->input('password'));
    	//单独对某个字段进行处理
    	//随机生成50位的字符串 token
    	$date['token'] = str_random(50);
    	// dd($date);
    	//将数据插入数据库
    	$res = DB::table('users')->insert($date);
    	if($res){
    		//成功 重定向 页面跳转到列表页
    		return redirect('admin/user/index')->with('success','数据添加成功');
    	}else{
    		//失败 重定向 回到当前页
    		return back()->with('error','数据插入失败');
    	}
    }

    /**
     * 用户列表页
     * admin/user/index
     */
    public function getIndex(Request $request)
    {
    	//判断是否有值
    	// if(empty($request->input('keywords'))){
    	// $users = DB::table('users')
    	// ->paginate($request->input('num',10));
    	// }else{
    	// // //读取数据 并且分页
    	// $users = DB::table('users')
    	// ->where('username','like','%'.$request->input('keywords').'%')
    	// ->paginate($request->input('num',10));
   		// }
   		//use 可以调用外部的
   		$users = DB::table('users')
    	->where(function($query)use($request){
    		$query->where('username','like','%'.$request->input('keywords').'%');
    	})
    	->paginate($request->input('num',10));
       	//解析模板
    	return view('user.index',['users'=>$users,'request'=>$request->all()]);
    }

    /**
     * 用户数据的修改 显示表单
     * admin/user/edit
     */

    public function getEdit($id)
    {
    	//查询数据
    	$res = DB::table('users')->where('id',$id)->first();
    	//显示模板 分配变量
    	return view('user.edit',['userinfo'=>$res]);
    }


    public function postUpdate(Request $request)
    {
   		//接受数据
   		$date = $request->only(['username','email','state']);
   		$id = $request->input('id');
   		//执行修改
   		$res1 = DB::table('users')->where('id',$id)->update($date);
   		if($res1){
   			//成功
   			return redirect('admin/user/index')->with('success','数据修改成功');
   		}else{
   			return back()->with('error','数据修改失败');
   		}

    }
    //用户订单删除
    public function getDelete($id)
    {
    	$res = DB::table('users')->where('id',$id)->delete();
   		if($res){
   			//成功
   			return redirect('admin/user/index')->with('success','数据删除成功');
   		}else{
   			return back()->with('error','数据删除失败');
   		}
    }

}
